import os
from PIL import Image
import cv2

# === 设置路径 ===
input_folder = r"C:\Users\cenkai\Desktop\PCB_Detection\circle_png_output"  # 原始 PNG 文件夹
output_folder = r"C:\Users\cenkai\Desktop\PCB_Detection\circle_jpg_output"  # 输出 JPG 文件夹

# === 取消 Pillow 限制（谨慎使用）===
Image.MAX_IMAGE_PIXELS = None

# === 创建输出文件夹（如果不存在）===
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# === 遍历 PNG 文件，转换并保存为 JPG ===
for file in os.listdir(input_folder):
    if file.lower().endswith(".png"):
        input_path = os.path.join(input_folder, file)
        output_path = os.path.join(output_folder, os.path.splitext(file)[0] + ".jpg")

        # 检查图像尺寸，避免超大图崩溃
        img_cv = cv2.imread(input_path)
        if img_cv is None:
            print(f"❌ 无法读取: {file}")
            continue
        h, w = img_cv.shape[:2]
        if h * w > 200_000_000:  # 大于 2 亿像素就跳过
            print(f"⚠️ 跳过超大图像: {file} ({w}x{h})")
            continue

        # 打开并保存为 JPG
        try:
            img = Image.open(input_path).convert("RGB")
            img.save(output_path, "JPEG")
            print(f"✅ 转换完成: {file} -> {os.path.basename(output_path)}")
        except Exception as e:
            print(f"❌ 转换失败: {file}，错误: {e}")
